フィルタ

フィルタ クエリと呼ばれる、特別なタイプのクエリを作成できます。標準のクエリを使用すると、データベースの情報が一覧表示されますが、フィルタ クエリを使用すると、次の処理が実行されます。

  • 特定の場所でユーザが使用できる値を減らす
  • 実行時に自動的に決定される値でフィルタリングされるリストを表示する

たとえば、タブを [インシデント] ウィンドウに追加し、インシデントに追加されたメモを表示する 2 つのオプションは次のとおりです。

  • コレクションとして表示。インシデントに追加されたすべてのメモが表示されます。
  • フィルタとして表示。インシデントを提出したユーザがインシデントに追加したメモのみが表示されます。

ウィンドウへの追加など、タブの追加の詳細については、コレクションをご参照ください。

次の表では、標準クエリとフィルタ クエリの主な違いを示します。

標準クエリ

フィルタ クエリ

選択するフィルタ条件は、クエリが基づいているビジネス オブジェクトから開始します。

フィルタ条件を選択するオブジェクトを選択できます。

条件は絶対値に設定する必要があります。これらは設計時または実行時にユーザ入力によって設定されます。

条件は絶対値またはランタイム値に設定できます。
たとえば、インシデントのリストを使用して、「ユーザが Dave と等しい」という絶対条件を設定し、ユーザが「Dave」であるインシデントのリストを取得できます。あるいは、「ユーザが (提出者) と等しい」というランタイム条件を設定し、現在のインシデントを提出したユーザに関係なく、インシデントのリストを取得できます。

グループを含めることができます。

グループを含めることはできません。

フィルタ クエリの一般的な使用方法:

  • オブジェクト デザイナーの関連するオブジェクトのデータを絞り込む
  • ウィンドウ設計のタブとして使用し、ウィンドウの属性に関連する情報のリストを提供する

オブジェクト デザイナーで関連するオブジェクトのデータをフィルタリングする詳細な方法については、データ フィルタリングをご参照ください。

次の手順では、[インシデント] ウィンドウのタブとして追加し、提出者がインシデントと同じ場合にのみインシデントのメモを表示する方法について説明します。このフィルタの 2 つの条件:

  • 「メモ」オブジェクトの「インシデント」がウィンドウに表示される「インシデント」と等しい
  • 「メモ」オブジェクトの「提出者」が「インシデント」オブジェクトの「提出者」と等しい

初期状態では、インシデント管理モジュールのすべてのメモがフィルタによって選択されています。次に、最初の条件が選択されたインシデントに追加されたメモをフィルタリングし、次の条件がインシデントと同じ提出者ユーザをもつメモをフィルタリングします。

フィルタを作成するには:
  1. クエリとレポート デザイナー[処理] リストで、[新しいフィルタ] をクリックします。
    [新しいフィルタ] ダイアログが表示されます。
  2. フィルタの [タイトル] と [説明] を入力します。
  3. [基準] グループで、リストに表示するデータを含む [モジュール] [ビジネス オブジェクト] を選択します。
    この例では、[インシデント管理][メモ] を選択します。メモに関する情報のリストを表示します。
  4. [フィルタ値] グループで、リストをフィルタする際の基準となる値を含むオブジェクトのモジュールビジネス オブジェクトを選択します。これは、ウィンドウの基になるオブジェクトです。
    この例では、[インシデント管理][インシデント] を選択します。インシデントインシデントの提出者の値でフィルタします。
  5. [全員] オプション ボタンを選択して、[OK] をクリックします。
    フィルタ デザイナーが表示されます。標準のクエリとレポート デザイナーと類似しています。
  6. 一覧に表示する属性を追加し、[次へ] をクリックします。
    [条件] ページが表示されます。条件を設定しない場合は、インシデント管理モジュールのすべてのメモが表示されます。
  7. 最初のフィルタ条件の属性を、[属性] ツリーから [現在の条件] リストにドラッグします。
    まず、表示されたインシデントに関連付けられたメモのみを表示するため、[インシデント] 関係 () を [現在の条件] リストにドラッグします。
    [条件] ダイアログが表示されます。現在のインシデントをすると、絶対値ではなく、ランタイム値を指定する必要があります。
  8. [ランタイム値の指定] をクリックします。
    [条件] ダイアログが表示されます。

このダイアログで利用可能な値は、インシデント管理\インシデントに基づいています。この値を基準にフィルタリングを実行するため、選択操作は必要ありません。最上位の値の「インシデント」でフィルタリングします。

  1. [OK] をクリックします。
    [現在の条件] リストが更新され、[インシデントが (インシデント) に等しい] が表示されます。つまり、「メモ」の「インシデント」がウィンドウに表示される「インシデント」と一致します。
  2. 条件の基準となる属性を、[属性] ツリーから [現在の条件] リストにドラッグします。
    この例では、「提出者」属性を使用します。
    [条件] ダイアログが表示されます。

「インシデント」自体ではなく、「インシデント」の属性でフィルタリングしているため、[条件] ダイアログの表示が変わります。

  1. [比較値] グループで、[ランタイム値を指定] を選択します。
    [値] コントロールが、絶対値を指定するリスト ボックスから、実行時に決定される値を指定するツリーに変わります。このツリーで利用可能な値は、[新しいフィルタ] ダイアログの [フィルタ値] グループで選択したオブジェクトから取得されます。
  2. [値] ツリーで、ランタイム値を使用する属性を選択し、フィルタ条件と一致させ、[OK] をクリックします。
    この例では、「提出者」属性を使用します。
    [現在の条件] リストが更新されます。
  3. をクリックしてから、[完了] をクリックします。

この例では、フィルタ条件は、「インシデントが (インシデント) に等しい」と「提出者が (提出者) と等しい」です。このフィルタはインシデント管理\メモに基づき、インシデント管理\インシデントでフィルタリングされるため、「メモ」のインシデントがウィンドウで表示されるインシデントと一致するとき、および「メモ」の提出者が現在のインシデントの提出者と一致するときに、これらの条件が当てはまります。
クエリ コントロール (ウィンドウへのクエリの追加を参照) を使用してこのフィルタを [インシデント] ウィンドウに追加すると、ウィンドウの下にタブが作成され、インシデントと同じ「提出者」値をもつインシデントに関連付けられたすべてのメモが一覧表示されます。